The groundtruth video is
The targetted affordance is
door
The link placement code is
from articulate_anything.api.odio_urdf import * def partnet_103480(input_dir, links) -> Robot: pred_robot = Robot(input_dir=input_dir, name="washing_machine") pred_robot.add_link(links['base']) pred_robot.add_link(links['washing_machine_body']) pred_robot.add_joint(Joint("base_to_washing_machine_body", Parent("base"), Child("washing_machine_body"), type="fixed"), ) pred_robot.add_link(links['door']) pred_robot.place_relative_to('door', 'washing_machine_body', placement="front", clearance=0.0) pred_robot.add_link(links['knob']) pred_robot.place_relative_to('knob', 'washing_machine_body', placement="front", clearance=0.0) for button_idx in range(6): button_link = "button" if button_idx == 0 else f"button_{button_idx+1}" pred_robot.add_link(links[button_link]) pred_robot.place_relative_to(button_link, 'washing_machine_body', placement="front", clearance=0.0) return pred_robot